﻿using Exam.infranstuctrue.Dto.Request.Stage;
using Exam.infranstuctrue.Dto.Request.StageQuestion;
using Exam.infranstuctrue.Dto.Respones;
using Exam.infranstuctrue.Tools.Attributes;

namespace Exam.Service.Interface
{
    [IProvider]
    public interface IStageServer
    {
        /// <summary>
        /// 获取关卡列表
        /// </summary>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <param name="key"></param>
        /// <param name="IsBan"></param>
        /// <param name="IsPublic"></param>
        /// <returns></returns>
        Task<ApiResult> GetStage(string? token = null, int page = 1, int limit = 10, string? key = "", int IsBan = -1, int IsPublic = -1);
        /// <summary>
        /// 添加关卡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> AddStage(StageDto dto);
        /// <summary>
        /// 删除关卡
        /// </summary>
        /// <param name="sid"></param>
        /// <returns></returns>
        Task<ApiResult> DeleteStage(string sid);
        /// <summary>
        /// 获取单个关卡
        /// </summary>
        /// <param name="sid"></param>
        /// <returns></returns>
        Task<ApiResult> GetEchoStage(string sid);
        /// <summary>
        /// 修改关卡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateStage(StageDto dto);
        /// <summary>
        /// 是否禁用
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> StageIsBan(List<StageDto> dto);
        /// <summary>
        /// 是否发布
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> StageIsPublish(List<StageDto> dto);
        /// <summary>
        /// 添加子集关卡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> AddChilrenStage(StageDetaliDto dto);
        /// <summary>
        /// 获取单个子集关卡
        /// </summary>
        /// <param name="sdid"></param>
        /// <returns></returns>
        Task<ApiResult> GetEchoStageChilren(string sdid);
        /// <summary>
        /// 修改子集关卡
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ApiResult> UpdateStageChilren(StageDetaliDto dto);
        /// <summary>
        /// 删除子集关卡
        /// </summary>
        /// <param name="sdid"></param>
        /// <returns></returns>
        Task<ApiResult> DeleteStageChilren(string sdid);
        /// <summary>
        /// 子集是否禁用
        /// </summary>
        /// <param name="sdid"></param>
        /// <returns></returns>
        Task<ApiResult> ChilrenIsBan(string sdid);
        /// <summary>
        /// 获取指定试题
        /// </summary>
        /// <param name="lable"></param>
        /// <param name="lv"></param>
        /// <returns></returns>
        Task<ApiResult> GetQuestion(string lable, int lv, int page, int limit, string? key = "");
        /// <summary>
        /// 获取关卡试题
        /// </summary>
        /// <param name="lable"></param>
        /// <param name="lv"></param>
        /// <returns></returns>
        Task<ApiResult> StageGetQuestion(string sdid);
        /// <summary>
        /// 添加关卡试题
        /// </summary>
        /// <param name="sdid"></param>
        /// <returns></returns>
        Task<ApiResult> StageAddQuestion(StageQuestionDto dto);
        /// <summary>
        /// 删除关卡试题
        /// </summary>
        /// <param name="sdid"></param>
        /// <returns></returns>
        Task<ApiResult> StageDeteleQuestion(StageQuestionDto dto);
    }
}
